package com.liang.iterator;


import java.util.ArrayList;
import java.util.Iterator;

public class IteratorRemove {
    public static void main(String[] args) {
        ArrayList<String> arr = new ArrayList<>();
        arr.add("a");
        arr.add("b");
        arr.add("b");
        arr.add("c");
        arr.add("d");

//        remove1(arr);
//        remove2(arr);
        /*arr.removeIf(new Predicate<String>() {
            @Override
            public boolean test(String s) {
                return s.equals("b");
            }
        });*/

        arr.removeIf(s -> s.equals("b"));
        System.out.println(arr);
    }

    public static void remove2(ArrayList<String> arr) {
        System.out.println(arr);
        for (int i = 0; i < arr.size(); i++) {
            if ("b".equals(arr.get(i))) {
                arr.remove(i);
                i--;
            }
        }
    }

    public static void remove1(ArrayList<String> arr) {
        Iterator<String> iterator = arr.iterator();
        while (iterator.hasNext()) {
            String next = iterator.next();
            if ("b".equals(next)) {
                iterator.remove();
            }
        }
    }

}
